//package com.atguigu.dao;
//
//import com.atguigu.utils.JDBCUtils;
//import org.apache.commons.dbutils.QueryRunner;
//import org.apache.commons.dbutils.handlers.BeanHandler;
//import org.apache.commons.dbutils.handlers.BeanListHandler;
//
//import java.sql.Connection;
//import java.sql.SQLException;
//import java.util.List;
//
///**
// * Date:2020/8/28
// * Author:ybc
// * Description: 抽象增删改查功能的父类
// */
//public class BaseDao<T> {
//
//    //创建dbutils提供的操作数据库中数据的对象：QueryRunner
//    private QueryRunner queryRunner = new QueryRunner();
//
//    /**
//     * 实现增删改的功能
//     * @param sql：要执行的sql语句
//     * @param params：按照顺序为sql语句中的占位符所赋的值
//     */
//    public int update(String sql, Object...params){
//        Connection connection = null;
//        int result = 0;
//        try {
//            connection = JDBCUtils.getConnection();
//            result = queryRunner.update(connection, sql, params);
//        } catch (SQLException e) {
//            e.printStackTrace();
//        } finally {
//            JDBCUtils.closeConnection(connection);
//        }
//        return result;
//    }
//
//    /**
//     * 通过所设置的sql语句，查询一个list集合
//     * @param clazz：提供sql语句查询出的数据所对应的实体类的Class对象
//     * @param sql：要执行的sql语句
//     * @param params：按照顺序为sql语句中的占位符所赋的值
//     * @return
//     * BeanListHandler：将sql语句查询的结果处理为一个list集合
//     */
//    public List<T> getBeanList(Class<T> clazz, String sql, Object...params){
//        Connection connection = null;
//        List<T> list = null;
//        try {
//            connection = JDBCUtils.getConnection();
//            list = queryRunner.query(connection, sql, new BeanListHandler<>(clazz), params);
//        } catch (SQLException e) {
//            e.printStackTrace();
//        } finally {
//            JDBCUtils.closeConnection(connection);
//        }
//        return list;
//    }
//
//    /**
//     * 通过所设置的sql语句，查询一个bean对象
//     * @param clazz：提供sql语句查询出的数据所对应的实体类的Class对象
//     * @param sql：要执行的sql语句
//     * @param params：按照顺序为sql语句中的占位符所赋的值
//     * @return
//     * BeanHandler：将sql语句查询的结果处理为bean对象
//     */
//    public T getBean(Class<T> clazz, String sql, Object...params){
//        Connection connection = null;
//        T t = null;
//        try {
//            connection = JDBCUtils.getConnection();
//            t = queryRunner.query(connection, sql, new BeanHandler<>(clazz), params);
//        } catch (SQLException e) {
//            e.printStackTrace();
//        } finally {
//            JDBCUtils.closeConnection(connection);
//        }
//        return t;
//    }
//
//}
